package com.luobo.found.prototype;

/**
 * 如果创建的对象是轻类型对象，也就是构造起来不是很麻烦，那么使用new比clone()快不止一个数量级。但是如果是创建重的对象，构造对象超级麻烦，那么使用原型比new对象要快。
 */
public class PrototypeTest {
    public static void main(String[] args) throws Exception {

        AAA aaa = new AAA();
        aaa.setBbb(new BBB("张三"));

        long directNewStart = System.currentTimeMillis();

        for (int i = 0; i <= 100000000; i++) {
            AAA a = new AAA();
            a.setBbb(new BBB("张三"));
        }
        System.out.println("直接new一亿次花费时间：" + (System.currentTimeMillis() - directNewStart));

        long useCloneStart = System.currentTimeMillis();
        for (int i = 0; i <= 100000000; i++) {
            AAA clone = aaa.clone();
        }
        System.out.println("使用clone()一亿次方法克隆花费时间："
                + (System.currentTimeMillis() - useCloneStart));

//        直接new一亿次花费时间：1426
//        使用clone()一亿次方法克隆花费时间：10842    浅拷贝

//        直接new一亿次花费时间：1497
//        使用clone()一亿次方法克隆花费时间：22171    深拷贝

//        直接new一亿次花费时间：64234 ms
//        使用clone()一亿次方法克隆花费时间：23648 ms  复杂构造+深拷贝

    }
}
